## First Chapter
### Key concepts
Main Idea
Details
### Questions, concepts to explore
### Personal thoughts
### Examples or code snippets
### Chapter summary
### References or additional reading materials
- Table of content: Jump up!

Learning React

Modern Patterns for Developing React Apps


Table of content


Chapter 1 - Welcome to react

Key concepts


Chapter 2 - Javascript for react

Key concepts

Questions, concepts to explore

Personal thoughts

Since initial release in 1995, Javascript has gone through many changes. From adding interactive elements to the web pages javascript became more robust with early DHTML and AJAX features to Node.js and many different frameworks but also many core, built-in features have improved so much that javascript has become a real software language that's used to build modern, fullstack applications we have today. In early days many software engineers considered javascript to be a gimmick scripting language and nothing more than that.

After release of ES6 in 2015. there have been yearly releases of new JS features. Each proposal is taken through the clearly defined stages, from stage 0 up to stage 4 which represents the finished proposal. In those final stages it is up to the browser vendors to implement the features.

Examples or code snippets

// traditional concatenation
console.log(lastName + ", " + firstName + " " + middleName);

// template string or template literal uses backticks and respects the whitespasce making them easier to read
console.log(`${lastName}, ${firstName} ${middleName}`);
// function declarations are hoisted to the top, you can call the function before it you declare it. so code like this will run without problems

logSomething(); // works fine, function declaration is hoisted to the top of the scope

function logSomething() {
    console.log("You are doing great");
}
logSomething(); // TypeError: logSomething is not a function

const logSomething = function() {
    console.log("You are doing great");
}

logSomething(); // works fine
Tip

When importing files and functions in a project you can occasionally get an TypeError: [name] is not a function because a function you imported is written as an expression. If you see it, try to refactor the code and declare the function.

Chapter summary

CONTINUE AT FUNCTION RETURNS @ 40/488

References or additional reading materials